//app.js
App({
  globalData: {
    userInfo: null,
    piechart: [],
    authType: [],  // 授权记录
    loginStatus: false, // 登陆状态
  },
  onLaunch: function () {
    // 展示本地存储能力
   
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

   
  
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
          wx.getUserInfo({
            success: function (info){
              // 可以将 res 发送给后台解码出 unionId
              //this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              // if (this.userInfoReadyCallback) {
              //   this.userInfoReadyCallback(res)
              // }






            }
          })
        }
      }
    })
  },
  wx_login: function () {
    var _this = this;
    var scopeType = 'userInfo'; // 获取用户信息类型
    // 1.判断是否授权
    if (_this.globalData.authType[scopeType]) { // 已授权
      // 2.验证用户登陆
      if (_this.globalData.loginStatus) { // 已登陆
        if (_this.userReadyCallback) {
          _this.userReadyCallback(_this.globalData.token);
        }
      } else { // 未登录
        _this.wx_loginAction();
      }
    } else { // 未授权
      //console.log('未授权');
      wx.hideNavigationBarLoading(); // 隐藏头部加载菊花
      wx.hideLoading(); // 关闭加载动画
      _this.wx_validateAuthorize(scopeType, 'wx_login'); // 验证并设置用户授权
    }
  },
  /**
 * 用户登陆操作
 */
  wx_loginAction: function () {
    var _this = this;
    // 登录
    wx.login({
      success: function (res) {
        var code = res.code; //获取code
        wx.getUserInfo({ //得到rawData, signatrue, encryptData
          success: function (data) {
            console.log("getUserInfo")
            console.log(data)
            var nickName = data.userInfo.nickName;
            var rawData = data.rawData;
            var signature = data.signature;
            var encryptedData = data.encryptedData;
            var iv = data.iv;
            wx.request({
              url: 'https://data1.cqhot.cn/index.php?s=/Admin/Apiwxp/login',
              data: {
                "code": code,
                "rawData": rawData,
                "signature": signature,
                'iv': iv,
                'encryptedData': encryptedData,
                'nickName': nickName
              },
              method: 'GET',
              success: function (info) {
                console.log("info");
                console.log(info);
              }
            })
          }
        })
      },
    })
  },
  /**
 * 验证并设置用户授权
 */
  wx_validateAuthorize: function (scopeType) {
    var _this = this;
    // 1.获取授权状态
    wx.getSetting({
      success: result => {
        // 2.判断是否授权
        if (result.authSetting['scope.' + scopeType]) { // 已授权
          _this.globalData.authType[scopeType] = true;
          _this.wx_login(); // 再次调用登陆
        } else { // 未授权
          // 让用户点击授权

          // 判断授权类型是否是获取用户信息
          if (scopeType == 'userInfo') { // 获取用户信息授权
            if (_this.userInfoAuthorizationCallback) {
              _this.userInfoAuthorizationCallback(true)
            }
            //console.log(scopeType + '未授权');
          } else { // 其他授权
            wx.authorize({
              scope: 'scope.' + scopeType,
              success(res) {
                _this.globalData.authType[scopeType] = true;
                fun();
              },
              fail() {
                wx.showModal({
                  title: '提示',
                  content: '请允许授权以便为你提供更好的服务',
                  showCancel: false,
                  success: function () {
                    wx.openSetting({ // 调起客户端小程序设置界面，返回用户设置的操作结果。
                      success: (res) => {
                        if (res.authSetting['scope.' + scopeType]) {
                          _this.globalData.authType[scopeType] = true;
                          fun();
                        } else {
                          _this.globalData.authType[scopeType] = false;
                          _this.validateAuthorize(scopeType, fun);
                        }
                      },
                      fail() {
                        _this.globalData.authType[scopeType] = false;
                        _this.validateAuthorize(scopeType, fun);
                      }
                    });
                  }
                })
              }
            });
          }

        }
      }
    })
  },

  /**
   * 设置用户授权
   * scopeType:权限类型(userInfo/werun)
   * fun:回调函数，表示需要刷新的内容
   */
  validateAuthorize: function (scopeType, fun) {
    var _this = this;
    wx.getSetting({
      success: result => {
        // 验证是否授权
        if (result.authSetting['scope.' + scopeType]) { // 已授权
          _this.globalData.authType[scopeType] = true;
          fun();
        } else { // 未授权
          // 判断授权类型是否是获取用户信息
          if (scopeType == 'userInfo') { // 获取用户信息授权
            if (_this.userInfoAuthorizationCallback) {
              _this.userInfoAuthorizationCallback(true)
              // 一段时间后重新执行一次登陆
              setTimeout(function () {
                _this.userLogin()
              }, 3000)
            }
            //console.log(scopeType + '未授权');
          } else { // 其他授权
            wx.authorize({
              scope: 'scope.' + scopeType,
              success(res) {
                _this.globalData.authType[scopeType] = true;
                fun();
              },
              fail() {
                wx.showModal({
                  title: '提示',
                  content: '请允许授权以便为你提供更好的服务',
                  showCancel: false,
                  success: function () {
                    wx.openSetting({ // 调起客户端小程序设置界面，返回用户设置的操作结果。
                      success: (res) => {
                        if (res.authSetting['scope.' + scopeType]) {
                          _this.globalData.authType[scopeType] = true;
                          fun();
                        } else {
                          _this.globalData.authType[scopeType] = false;
                          _this.validateAuthorize(scopeType, fun);
                        }
                      },
                      fail() {
                        _this.globalData.authType[scopeType] = false;
                        _this.validateAuthorize(scopeType, fun);
                      }
                    });
                  }
                })
              }
            });

          }
        }
      }
    })
  },

  PieChartData:function(){
    var _this = this;
    if (_this.getPieCallback) {
    // console.log("回调函数")
      _this.getPieCallback(_this.globalData.piechart);
     // console.log(_this.globalData.piechart)
    }
  }
  
})